gdkwindow: don't use last_slave for the source device if it is NULL
authorThomas Wood <thomas.wood@intel.com>
Thu, 7 Feb 2013 11:59:31 +0000 (11:59 +0000)
committerThomas Wood <thomas.wood@intel.com>
Tue, 12 Feb 2013 15:30:56 +0000 (15:30 +0000)
Some backends do not have slave devices, which means last_slave may be
NULL. Use the current device as the source device if last_slave is NULL
when synthesizing a crossing event.

https://bugzilla.gnome.org/show_bug.cgi?id=692411

gdk/gdkwindow.c

index b6d4e09faa18ab613b5a302b768deed5e949bf66..0bc984def31f34c32120a40b337797686f58cb5e 100644 (file)
@@ -9164,10 +9164,17 @@ do_synthesize_crossing_event (gpointer data)
                                 serial);
           if (new_window_under_pointer != pointer_info->window_under_pointer)
             {
+              GdkDevice *source_device;
+
+              if (pointer_info->last_slave)
+                source_device = pointer_info->last_slave;
+              else
+                source_device = device;
+
               _gdk_synthesize_crossing_events (display,
                                                pointer_info->window_under_pointer,
                                                new_window_under_pointer,
-                                               device, pointer_info->last_slave,
+                                               device, source_device,
                                                GDK_CROSSING_NORMAL,
                                                pointer_info->toplevel_x,
                                                pointer_info->toplevel_y,